Primero os explicare el concepto de puntero. Un puntero es
una variable que lo unico que contiene es una direccion de memoria.
Este en si no contiene nada, pero lo que se escribe o lee en el,
es el contenido de esa porcion de memoria.
Los punteros se representan por * (para nosotros asterisco, en ingles
significa pointer)

Ejemplo

int *puntero;

char *puntero2;

Los punteros pueden contener el contenido de una variable o tambien apuntar a otros punteros
guardando su direccion de memoria. (esto nos servira para las listas, que veremos mas adelante)

Para usar un puntero como vector, ha de reservarse su espacio en memoria.
Por ejemplo, para usar un char y guardar una cadena, no se haria como con memoria estatica,
sino que se declararia char *puntero; y luego se usaria la orden malloc para reservar
espacio en memoria.Para usar malloc debeis incluir la libreria stdlib.h

La sintaxis de malloc es 

puntero = (tipo de datos *) malloc(numero de espacio a reservar);

Ejemplo:

char *cadena;

cadena=(char *) malloc(10*(sizeof(char));

Esto reservara 10 posiciones de memoria(10, por el tamao del tipo de datos,aqui * signifca 
la operacion "multiplicacion") y podra ser usado como un array.

Una vez acabado de usar un puntero, el espacio en memoria que usa puede 
liberarse usando la orden free (tambien requiere stdlib.h)

La sintaxis es

free(puntero);

Ejemplo:

free(cadena);

Texto escrito integramente por ]_HQH_[ 

Este texto es de libre distribucion, pero debes citar la fuente http://nuevared.tk

Texto escrito para el curso de programacion basica en C de http://prehackers.com y 
http://nuevared.tk 

